package com.smartfarm.observer;

import com.smartfarm.domain.environment.EnvironmentData;
import java.util.ArrayList;
import java.util.List;

/**
 * 环境监测器 - 被观察者
 * 被观察者 EnvironmentMonitor
 * 维护观察者列表（EnvironmentObserver），
 * 通过 updateEnvironmentData 触发通知。
 * 观察者（如农业设备）实现
 * EnvironmentObserver 的 onEnvironmentUpdate 方法
 * 接收环境数据更新。
 */
public class EnvironmentMonitor {
    private final List<EnvironmentObserver> observers = new ArrayList<>();
    private EnvironmentData currentData;

    public void addObserver(EnvironmentObserver observer) {
        observers.add(observer);
    }

    public void removeObserver(EnvironmentObserver observer) {
        observers.remove(observer);
    }

    public void updateEnvironmentData(EnvironmentData data) {
        this.currentData = data;
        notifyObservers();
    }

    private void notifyObservers() {
        for (EnvironmentObserver observer : observers) {
            observer.onEnvironmentUpdate(currentData);
        }
    }

    public EnvironmentData getCurrentData() {
        return currentData;
    }
} 